package cn.edu.nwpu.warehousemanagement.service;

import cn.edu.nwpu.warehousemanagement.pojo.InventoryConfig;
import cn.edu.nwpu.warehousemanagement.pojo.Result;
import cn.edu.nwpu.warehousemanagement.pojo.dto.PageDTO;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 库存配置服务接口
 *
 * @author LSR
 */
public interface InventoryConfigService {
    /**
     * 创建库存配置
     *
     * @param config 库存配置实体
     * @return 操作结果
     */
    Result<InventoryConfig> create(InventoryConfig config);

    /**
     * 删除库存配置
     *
     * @param id 配置ID
     * @return 操作结果
     */
    Result<Void> delete(Long id);

    /**
     * 通过productId删除配置
     *
     * @param productId 包含productID的DTO
     * @return 操作结果
     */
    Result<Void> deleteByProductId(Long productId);

    /**
     * 更新库存配置
     *
     * @param config 库存配置实体
     * @return 操作结果
     */
    Result<InventoryConfig> update(InventoryConfig config);

    /**
     * 根据ID获取库存配置
     *
     * @param id 配置ID
     * @return 操作结果
     */
    Result<InventoryConfig> getById(Long id);

    /**
     * 根据商品ID获取库存配置
     *
     * @param productId 商品ID
     * @return 操作结果
     */
    Result<InventoryConfig> getByProductId(Long productId);

    /**
     * 分页查询库存配置
     *
     * @param pageDTO 页码(从1开始)
     * @return 分页结果
     */
    Result<Page<InventoryConfig>> listByPage(PageDTO pageDTO);


    /**
     * 获取一个包含所有InventoryConfig的List
     *
     * @return 返回一个包含多个Page的List，每个Page包含20条Product
     */
    Result<List<InventoryConfig>> getAllInventoryConfigList();


    /**
     * 按页返回所有InventoryConfig
     *
     * @return 返回一个包含多个Page的List，每个Page包含20条Product
     */
    Result<List<Page<InventoryConfig>>> getAllInventoryConfigPages();
}